package org.wdcode.core.lucene.need;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.Version;

/**
 * 指定Lucene需要用到的类 接口
 * @author WD
 * @since JDK6
 * @version 1.0 2010-05-25
 */
public interface LuceneNeed {
	/**
	 * 设置查询器
	 * @param searcher 查询器
	 */
	void setSearcher(Searcher searcher);

	/**
	 * 设置分词器
	 * @param analyzer 分词器
	 */
	void setAnalyzer(Analyzer analyzer);

	/**
	 * 设置索引目录
	 * @param directory 索引目录
	 */
	void setDirectory(Directory directory);

	/**
	 * 设置索引目录路径
	 * @param 索引目录路径
	 */
	void setIndexPath(String indexPath);

	/**
	 * 设置最大字段长度
	 * @param maxFieldLength 最大字段长度
	 */
	void setMaxFieldLength(MaxFieldLength maxFieldLength);

	/**
	 * 设置Lucene的版本
	 * @param version Lucene的版本
	 */
	void setVersion(Version version);

	/**
	 * 设置是创建还是追加索引
	 * @param create true 创建 false 追加
	 */
	void setCreate(boolean create);

	/**
	 * 获得读取索引时是否只读
	 * @param readOnly true 只读 false 不只读
	 */
	void setReadOnly(boolean readOnly);

	/**
	 * 获得查询器
	 * @return 查询器
	 */
	Searcher getSearcher();

	/**
	 * 获得索引目录
	 * @return 索引目录
	 */
	Directory getDirectory();

	/**
	 * 获得分词器
	 * @return 分词器
	 */
	Analyzer getAnalyzer();

	/**
	 * 获得最大字段长度
	 * @return 最大字段长度
	 */
	MaxFieldLength getMaxFieldLength();

	/**
	 * 获得Lucene的版本
	 * @return
	 */
	Version getVersion();

	/**
	 * 获得索引目录路径
	 * @return 索引目录路径
	 */
	String getIndexPath();

	/**
	 * 获得是创建还是追加索引
	 * @return true 创建 false 追加
	 */
	boolean isCreate();

	/**
	 * 获得读取索引时是否只读
	 * @return true 只读 false 不只读
	 */
	boolean isReadOnly();
}
